package chapter5.cookie.example;

        import java.io.IOException;
        import java.text.SimpleDateFormat;
        import java.util.Date;
        import javax.servlet.ServletException;
        import javax.servlet.http.*;

public class LastAccessServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        String lastAccessTime = null;

        // 获取所有的 cookie，并将这些 cookie 存放在数组中
        Cookie[] cookies = request.getCookies();

        // 遍历 cookies 数组
        for (int i = 0; cookies != null && i < cookies.length; i++) {
            if ("lastAccess".equals(cookies[i].getName())) {
                // 如果 cookie 的名称为 lastAccess,则获取该 cookie 的值
                lastAccessTime = cookies[i].getValue();
                break; // 找到后，无需继续遍历，跳出循环
            }
        }

        // 判断是否存在名称为 lastAccess 的 cookie
        if (lastAccessTime == null) {
            response.getWriter().print("您是首次访问本站！！！");
        } else {
            // 格式化日期时间
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            response.getWriter().print("您上次的访问时间是： " + sdf.format(new Date(Long.parseLong(lastAccessTime))));
        }

        // 创建 cookie,将当前时间作为 cookie 的值发送给客户端
        String currentTime = String.valueOf(System.currentTimeMillis());
        Cookie cookie = new Cookie("lastAccess", currentTime);

        // 设置 cookie 的有效期为1天（单位为秒），可选步骤
        cookie.setMaxAge(24 * 60 * 60);

        // 发送 cookie
        response.addCookie(cookie);
    }

    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 调用 doGet 方法处理 POST 请求，这里应该调用 super.doGet(req, resp) 或者单独处理 POST 请求逻辑
        // 注意：原代码中的 this.doPost(req, resp); 会导致递归调用，造成栈溢出错误
        this.doGet(req, resp); // 修改为调用 doGet 方法处理 POST 请求，仅作为示例，实际应根据需求处理
    }
}
